package com.macauscholar.app

import android.app.AlertDialog
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.PersistableBundle
import android.util.Log
import android.widget.Toast
import com.pgyersdk.update.DownloadFileListener
import com.pgyersdk.update.PgyUpdateManager
import com.pgyersdk.update.UpdateManagerListener
import com.pgyersdk.update.javabean.AppBean
import io.flutter.embedding.android.FlutterActivity
import java.io.File

class MainActivity: FlutterActivity() {

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
        versionUpdate()
    }
   private fun versionUpdate() {
        /** 新版本 **/
        /** 新版本  */
        PgyUpdateManager.Builder()
                .setForced(true) //设置是否强制提示更新,非自定义回调更新接口此方法有用
                .setUserCanRetry(false) //失败后是否提示重新下载，非自定义下载 apk 回调此方法有用
                .setDeleteHistroyApk(false) // 检查更新前是否删除本地历史 Apk， 默认为true
                .setUpdateManagerListener(object : UpdateManagerListener {
                    override fun onNoUpdateAvailable() {
                        //没有更新是回调此方法
                        Toast.makeText(this@MainActivity, "當前已經是最新版本", Toast.LENGTH_LONG).show()
                    }

                    override fun onUpdateAvailable(appBean: AppBean) {
                        AlertDialog.Builder(this@MainActivity, R.style.TextAppearance_Compat_Notification_Info)
                                .setIcon(R.mipmap.ic_launcher)//這裡是顯示提示框的圖片資訊，我這裡使用的預設androidApp的圖示
                                .setTitle("檢測到新版本")
                                .setMessage("有新版本可以更新, 版本：" + appBean.versionName)
                                .setNegativeButton("取消", null)
                                .setPositiveButton("更新") { dialog, which ->
//                                    PgyUpdateManager.downLoadApk(appBean.downloadURL)
                                    try {
                                        val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(appBean.downloadURL))
                                        startActivity(browserIntent)
                                    } catch (e: java.lang.Exception) {
                                        Toast.makeText(this@MainActivity, "安裝失敗", Toast.LENGTH_LONG).show()
                                        Log.e("PGY", "安裝失敗", e)
                                    }
                                }
                                .show()
                    }

                    override fun checkUpdateFailed(e: Exception) {
                        //更新检测失败回调
                        //更新拒绝（应用被下架，过期，不在安装有效期，下载次数用尽）以及无网络情况会调用此接口
                        Log.e("PGY", "檢查更新失敗", e)
//                        Toast.makeText(this@MainActivity, "檢查更新失敗", Toast.LENGTH_LONG).show()
                    }
                }) //注意 ：
                //下载方法调用 PgyUpdateManager.downLoadApk(appBean.getDownloadURL()); 此回调才有效
                //此方法是方便用户自己实现下载进度和状态的 UI 提供的回调
                //想要使用蒲公英的默认下载进度的UI则不设置此方法
                .setDownloadFileListener(object : DownloadFileListener {
                    override fun downloadFailed() {
//                        Toast.makeText(this@MainActivity, "下載失敗", Toast.LENGTH_LONG).show();
                    }

                    override fun onProgressUpdate(vararg p0: Int?) {
                        Log.e("PGY", "更新下载apk进度" + p0[0])
                    }

                    override fun downloadSuccessful(p0: File?) {
                        try {
//                            val browserIntent = Intent(Intent.ACTION_VIEW, uri)
//                            startActivity(browserIntent)
//                            PgyUpdateManager.installApk(uri)
                        } catch (e: java.lang.Exception) {
                            Log.e("PGY", "安裝失敗", e)
                        }
                    }
//                    override fun downloadSuccessful(uri: Uri?) {
//                        try {
//                            val browserIntent = Intent(Intent.ACTION_VIEW, uri)
//                            startActivity(browserIntent)
////                            PgyUpdateManager.installApk(uri)
//                        } catch (e: java.lang.Exception) {
//                            Log.e("PGY", "安裝失敗", e)
//                        }
//                    }

                })
                .register()
    }
}
